@echo off
chcp 65001
echo ========================================
echo 退费审核系统 - Nginx 服务安装脚本
echo ========================================
echo.

:: 检查是否以管理员身份运行
net session >nul 2>&1
if %errorLevel% == 0 (
    echo [√] 管理员权限检查通过
) else (
    echo [×] 请以管理员身份运行此脚本
    pause
    exit /b 1
)

:: 设置变量
set NGINX_DIR=D:\Server\nginx-1.28.0
set SERVICE_NAME=RefundAuditNginx
set NSSM_URL=https://nssm.cc/release/nssm-2.24.zip
set NSSM_DIR=D:\Server\nssm

echo [1] 检查 Nginx 安装状态...
if exist "%NGINX_DIR%\nginx.exe" (
    echo [√] Nginx 已安装在 %NGINX_DIR%
) else (
    echo [×] Nginx 未安装，请先运行 deploy_nginx.bat
    pause
    exit /b 1
)

echo.
echo [2] 检查 NSSM (Non-Sucking Service Manager)...
if exist "%NSSM_DIR%\win64\nssm.exe" (
    echo [√] NSSM 已安装
) else (
    echo [!] NSSM 未安装
    echo.
    echo 由于服务器不通外网，请手动安装 NSSM:
    echo 1. 在有网络的电脑上下载: https://nssm.cc/release/nssm-2.24.zip
    echo 2. 将下载的文件传输到服务器
    echo 3. 解压到: %NSSM_DIR%
    echo 4. 确保存在文件: %NSSM_DIR%\win64\nssm.exe
    echo.
    echo 解压后的目录结构应该是:
    echo %NSSM_DIR%\
    echo   └── win64\
    echo       └── nssm.exe
    echo.
    set /p choice="NSSM 已手动安装完成? (y/n): "
    if /i "%choice%"=="y" (
        if exist "%NSSM_DIR%\win64\nssm.exe" (
            echo [√] NSSM 安装确认成功
        ) else (
            echo [×] 未找到 NSSM 可执行文件，请检查安装路径
            pause
            exit /b 1
        )
    ) else (
        echo 请先安装 NSSM 后重新运行此脚本
        pause
        exit /b 1
    )
)

echo.
echo [3] 检查现有服务...
sc query "%SERVICE_NAME%" >nul 2>&1
if %errorLevel% == 0 (
    echo [!] 服务 %SERVICE_NAME% 已存在，正在删除...
    net stop "%SERVICE_NAME%" >nul 2>&1
    "%NSSM_DIR%\win64\nssm.exe" remove "%SERVICE_NAME%" confirm >nul 2>&1
    echo [√] 已删除现有服务
)

echo.
echo [4] 安装 Nginx 服务...
"%NSSM_DIR%\win64\nssm.exe" install "%SERVICE_NAME%" "%NGINX_DIR%\nginx.exe"
if %errorLevel% == 0 (
    echo [√] 服务安装成功
) else (
    echo [×] 服务安装失败
    pause
    exit /b 1
)

echo.
echo [5] 配置服务参数...
"%NSSM_DIR%\win64\nssm.exe" set "%SERVICE_NAME%" AppDirectory "%NGINX_DIR%"
"%NSSM_DIR%\win64\nssm.exe" set "%SERVICE_NAME%" DisplayName "退费审核系统 - Nginx 服务"
"%NSSM_DIR%\win64\nssm.exe" set "%SERVICE_NAME%" Description "退费审核系统前端 Web 服务器"
"%NSSM_DIR%\win64\nssm.exe" set "%SERVICE_NAME%" Start SERVICE_AUTO_START
"%NSSM_DIR%\win64\nssm.exe" set "%SERVICE_NAME%" AppStdout "%NGINX_DIR%\logs\service_stdout.log"
"%NSSM_DIR%\win64\nssm.exe" set "%SERVICE_NAME%" AppStderr "%NGINX_DIR%\logs\service_stderr.log"
echo [√] 服务参数配置完成

echo.
echo [6] 启动服务...
net start "%SERVICE_NAME%"
if %errorLevel% == 0 (
    echo [√] 服务启动成功
) else (
    echo [×] 服务启动失败
    echo 请检查日志: %NGINX_DIR%\logs\service_stderr.log
    pause
    exit /b 1
)

echo.
echo [7] 验证服务状态...
sc query "%SERVICE_NAME%" | find "RUNNING" >nul
if %errorLevel% == 0 (
    echo [√] 服务运行正常
) else (
    echo [×] 服务未正常运行
)

echo.
echo ========================================
echo 服务安装完成！
echo ========================================
echo 服务名称: %SERVICE_NAME%
echo 显示名称: 退费审核系统 - Nginx 服务
echo 访问地址: http://localhost:8089
echo ========================================
echo.
echo 服务管理命令:
echo   启动服务: net start "%SERVICE_NAME%"
echo   停止服务: net stop "%SERVICE_NAME%"
echo   重启服务: net stop "%SERVICE_NAME%" && net start "%SERVICE_NAME%"
echo   删除服务: "%NSSM_DIR%\win64\nssm.exe" remove "%SERVICE_NAME%" confirm
echo   服务配置: "%NSSM_DIR%\win64\nssm.exe" edit "%SERVICE_NAME%"
echo.
echo 日志文件:
echo   访问日志: %NGINX_DIR%\logs\access.log
echo   错误日志: %NGINX_DIR%\logs\error.log
echo   服务日志: %NGINX_DIR%\logs\service_stderr.log
echo.
echo 现在可以重启计算机测试开机自启动功能
echo.
echo 按任意键退出...
pause >nul